தரவுத்தள அட்டவணை தனிப்பயனாக்கலுக்கான ஜாங்கோ மாதிரி மெட்டா விருப்பங்களின் விரிவான வழிகாட்டி, அட்டவணை பெயர்கள், வரிசைப்படுத்துதல், அட்டவணைகள், கட்டுப்பாடுகள் மற்றும் பலவற்றை உள்ளடக்கியது. செயல்திறன் மற்றும் பராமரிப்புக்காக உங்கள் ஜாங்கோ மாதிரிகளை மேம்படுத்தவும்.
ஜாங்கோ மாதிரி மெட்டா விருப்பங்கள்: தரவுத்தள அட்டவணை தனிப்பயனாக்கலில் தேர்ச்சி பெறுதல்
ஜாங்கோவின் மாதிரி மெட்டா விருப்பங்கள் உங்கள் மாதிரிகள் தரவுத்தளத்துடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைத் தனிப்பயனாக்க ஒரு சக்திவாய்ந்த வழியை வழங்குகின்றன. இந்த விருப்பங்களைப் பயன்படுத்துவதன் மூலம், தரவுத்தள அட்டவணை பெயர்கள், வரிசைப்படுத்துதல், அட்டவணைப்படுத்துதல், கட்டுப்பாடுகள் மற்றும் உங்கள் ஜாங்கோ பயன்பாடுகளின் பிற முக்கிய அம்சங்களை நீங்கள் நன்றாக மாற்றலாம். இந்த வழிகாட்டி மாதிரி மெட்டா விருப்பங்களின் விரிவான ஆய்வை வழங்குகிறது, இது செயல்திறன் மற்றும் பராமரிப்புக்காக உங்கள் ஜாங்கோ மாதிரிகளை மேம்படுத்த உங்களுக்கு உதவ நடைமுறை எடுத்துக்காட்டுகள் மற்றும் செயல்படக்கூடிய நுண்ணறிவுகளை வழங்குகிறது.
மாதிரி மெட்டா வகுப்பைப் புரிந்துகொள்வது
ஒவ்வொரு ஜாங்கோ மாதிரியிலும், Meta
வகுப்பு ஒரு உள்ளமைவு கொள்கலனாக செயல்படுகிறது. இது மாதிரியின் நடத்தையை நிர்வகிக்கும் அமைப்புகளை நீங்கள் வரையறுக்கும் இடம், குறிப்பாக தரவுத்தளத்துடன் தொடர்புடையது. இந்த வகுப்பு தரவுத்தள அட்டவணை உருவாக்கம் மற்றும் மாற்றியமைத்தல் ஆகியவற்றில் நீங்கள் நுணுக்கமான கட்டுப்பாட்டை செலுத்த அனுமதிக்கிறது, உங்கள் ஜாங்கோ பயன்பாடு உங்கள் தரவுத்தள உள்கட்டமைப்புடன் தடையின்றி ஒருங்கிணைப்பதை உறுதி செய்கிறது.
அடிப்படை கட்டமைப்பு
Meta
வகுப்புடன் ஜாங்கோ மாதிரியின் அடிப்படை கட்டமைப்பு இங்கே:
from django.db import models
class MyModel(models.Model):
field1 = models.CharField(max_length=255)
field2 = models.IntegerField()
class Meta:
# Meta options go here
pass
முக்கிய மாதிரி மெட்டா விருப்பங்கள்
பொதுவாகப் பயன்படுத்தப்படும் மற்றும் முக்கியமான மாதிரி மெட்டா விருப்பங்களில் சிலவற்றைப் பார்ப்போம்:
1. db_table
: அட்டவணை பெயரைத் தனிப்பயனாக்குதல்
இயல்பாக, ஜாங்கோ தானாகவே பயன்பாட்டு லேபிள் மற்றும் மாதிரி பெயரை அடிப்படையாகக் கொண்டு தரவுத்தள அட்டவணை பெயர்களை உருவாக்குகிறது. இருப்பினும், தனிப்பயன் அட்டவணை பெயரைத் குறிப்பிட db_table
விருப்பத்தைப் பயன்படுத்தி இந்த நடத்தையை நீங்கள் மாற்றலாம்.
உதாரணமாக
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
class Meta:
db_table = 'store_products'
இந்த எடுத்துக்காட்டில், Product
மாதிரிக்கான தரவுத்தள அட்டவணை இயல்புநிலை myapp_product
(myapp
பயன்பாட்டு லேபிள்) என்பதற்கு பதிலாக store_products
என்று பெயரிடப்படும்.
கருத்தில் கொள்ள வேண்டியவை
- தரவுத்தள பராமரிப்பை மேம்படுத்த விவரிக்கக்கூடிய மற்றும் நிலையான அட்டவணை பெயர்களைப் பயன்படுத்தவும்.
- தரவுத்தள பெயரிடும் மரபுகளைப் பின்பற்றவும் (எ.கா., snake_case ஐப் பயன்படுத்துதல்).
- நேரடிச் சூழலில் அட்டவணைப் பெயர்களை மாற்றினால், ஏற்கனவே உள்ள தரவுத்தளத் திட்டங்களில் ஏற்படும் தாக்கத்தைக் கவனியுங்கள். இடம்பெயர்வுகள் மிகவும் முக்கியமானவை!
2. ordering
: இயல்புநிலை வரிசைப்படுத்துதலை அமைத்தல்
தரவுத்தளத்திலிருந்து பொருள்கள் மீட்டெடுக்கப்படும் இயல்புநிலை வரிசையை குறிப்பிட ordering
விருப்பம் உங்களை அனுமதிக்கிறது. தரவை நிலையான மற்றும் கணிக்கக்கூடிய முறையில் காண்பிக்க இது மிகவும் பயனுள்ளதாக இருக்கும்.
உதாரணமாக
class Article(models.Model):
title = models.CharField(max_length=255)
publication_date = models.DateField()
class Meta:
ordering = ['-publication_date', 'title']
இந்த எடுத்துக்காட்டு கட்டுரைகளை முதலில் publication_date
மூலம் இறங்கு வரிசையில் (புதியது முதலில்) மற்றும் பின்னர் title
மூலம் ஏறுவரிசையில் வரிசைப்படுத்துகிறது.
விளக்கம்
-
முன்னொட்டு இறங்கு வரிசையைக் குறிக்கிறது.- வரிசைப்படுத்தலுக்கு நீங்கள் பல புலங்களைக் குறிப்பிடலாம்.
- வரிசைப்படுத்துதல் வினவல் செயல்திறனை கணிசமாக பாதிக்கும், குறிப்பாக பெரிய தரவுத்தொகுப்புகளுக்கு. அட்டவணைகளைச் சேர்க்க மறக்காதீர்கள் (பின்னர் விவரிக்கப்படும்).
3. indexes
: தரவுத்தள அட்டவணைகளை உருவாக்குதல்
தரவுத்தள வினவல் செயல்திறனை மேம்படுத்துவதற்கு அட்டவணைகள் முக்கியமானவை. குறிப்பிட்ட அளவுகோல்களுடன் பொருந்தக்கூடிய வரிசைகளை விரைவாகக் கண்டறிய அவை தரவுத்தளத்தை அனுமதிக்கின்றன. உங்கள் மாதிரிகளுக்கான அட்டவணைகளை வரையறுக்க indexes
விருப்பத்தைப் பயன்படுத்தவும்.
உதாரணமாக
from django.db import models
class Customer(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
email = models.EmailField(unique=True)
class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name'], name='name_idx'),
models.Index(fields=['email'], name='email_idx'),
]
இந்த எடுத்துக்காட்டு இரண்டு அட்டவணைகளை உருவாக்குகிறது: ஒன்று last_name
மற்றும் first_name
புலங்களில் (ஒரு கலவை அட்டவணை) மற்றும் மற்றொன்று email
புலத்தில்.
சிறந்த நடைமுறைகள்
WHERE
சரத்துகள் அல்லதுJOIN
நிபந்தனைகளில் அடிக்கடி பயன்படுத்தப்படும் அட்டவணை புலங்கள்.- பல புலங்களில் வடிகட்டும் வினவல்களுக்கான கலவை அட்டவணைகளைக் கவனியுங்கள்.
- அதிகப்படியான அட்டவணைப்படுத்தலைத் தவிர்க்கவும், அட்டவணைகள் எழுதும் செயல்பாட்டின் மேல்நிலையை அதிகரிக்கும்.
- வினவல் செயல்திறனைக் கண்காணிக்கவும், தேவைக்கேற்ப அட்டவணைகளைச் சரிசெய்யவும்.
4. unique_together
: தனித்துவமான கட்டுப்பாடுகளை செயல்படுத்துதல்
unique_together
விருப்பம் பல புலங்களில் தனித்துவத்தை செயல்படுத்துகிறது. புலங்களின் கலவை தனித்துவமாக இருக்க வேண்டும் என்பதை உறுதிப்படுத்த இது பயனுள்ளதாக இருக்கும்.
உதாரணமாக
class Membership(models.Model):
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
group = models.ForeignKey('Group', on_delete=models.CASCADE)
date_joined = models.DateField()
class Meta:
unique_together = [['user', 'group']]
இந்த எடுத்துக்காட்டு ஒரு பயனர் ஒரு குறிப்பிட்ட குழுவில் ஒரு முறை மட்டுமே உறுப்பினராக இருக்க முடியும் என்பதை உறுதி செய்கிறது. `பயனர்` மற்றும் `குழு`வின் கலவை தனித்துவமாக இருக்க வேண்டும்.
மாற்று: UniqueConstraint
ஜாங்கோ 2.2 உடன் தொடங்கி, தனித்துவமான கட்டுப்பாடுகளை வரையறுக்க விருப்பமான வழி constraints
விருப்பத்திற்குள் UniqueConstraint
வகுப்பைப் பயன்படுத்துவதாகும்:
from django.db import models
from django.db.models import UniqueConstraint
class Membership(models.Model):
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
group = models.ForeignKey('Group', on_delete=models.CASCADE)
date_joined = models.DateField()
class Meta:
constraints = [
UniqueConstraint(fields=['user', 'group'], name='unique_membership')
]
UniqueConstraint
வகுப்பு கட்டுப்பாடு பெயரிடல் மற்றும் நடத்தை மீது அதிக நெகிழ்வுத்தன்மை மற்றும் கட்டுப்பாட்டை வழங்குகிறது.
5. index_together
: ஒருங்கிணைந்த அட்டவணைகளை உருவாக்குதல்
unique_together
போன்றே, index_together
குறிப்பிடப்பட்ட புலங்களில் ஒருங்கிணைந்த அட்டவணைகளை உருவாக்குகிறது. இருப்பினும், unique_together
போலல்லாமல், இது தனித்துவத்தை செயல்படுத்தாது.
உதாரணமாக
class OrderItem(models.Model):
order = models.ForeignKey('Order', on_delete=models.CASCADE)
product = models.ForeignKey('Product', on_delete=models.CASCADE)
quantity = models.IntegerField()
class Meta:
index_together = [['order', 'product']]
இந்த எடுத்துக்காட்டு order
மற்றும் product
புலங்களில் ஒரு ஒருங்கிணைந்த அட்டவணையை உருவாக்குகிறது, இது இரண்டு புலங்களிலும் வடிகட்டும்போது வினவல் செயல்திறனை மேம்படுத்தும்.
மாற்று: Index
`unique_together` ஐப் போலவே, ஜாங்கோ 2.2+ க்கு பதிலாக `indexes` விருப்பத்துடன் `Index` ஐப் பயன்படுத்த பரிந்துரைக்கிறது:
from django.db import models
class OrderItem(models.Model):
order = models.ForeignKey('Order', on_delete=models.CASCADE)
product = models.ForeignKey('Product', on_delete=models.CASCADE)
quantity = models.IntegerField()
class Meta:
indexes = [
models.Index(fields=['order', 'product'], name='order_product_idx')
]
6. verbose_name
மற்றும் verbose_name_plural
: மனிதனால் படிக்கக்கூடிய பெயர்கள்
verbose_name
மற்றும் verbose_name_plural
விருப்பங்கள் உங்கள் மாதிரிகளுக்கான மனிதனால் படிக்கக்கூடிய பெயர்களைக் குறிப்பிட உங்களை அனுமதிக்கின்றன, அவை ஜாங்கோ நிர்வாக இடைமுகம் மற்றும் உங்கள் பயன்பாட்டின் பிற பகுதிகளில் பயன்படுத்தப்படுகின்றன.
உதாரணமாக
class Category(models.Model):
name = models.CharField(max_length=255)
class Meta:
verbose_name = 'Product Category'
verbose_name_plural = 'Product Categories'
ஜாங்கோ நிர்வாகியில், மாதிரி "Product Category" (ஒருமை) மற்றும் "Product Categories" (பன்மை) எனக் காட்டப்படும்.
7. abstract
: சுருக்க அடிப்படை வகுப்புகளை உருவாக்குதல்
abstract
விருப்பம் பல மாதிரிகளுக்கு பொதுவான புலங்கள் மற்றும் நடத்தைகளை வரையறுக்கும் சுருக்க அடிப்படை வகுப்புகளை உருவாக்க உங்களை அனுமதிக்கிறது. சுருக்க மாதிரிகள் நேரடியாக தரவுத்தள அட்டவணைகளாக உருவாக்கப்படவில்லை.
உதாரணமாக
from django.db import models
class TimestampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Article(TimestampedModel):
title = models.CharField(max_length=255)
content = models.TextField()
class Comment(TimestampedModel):
text = models.TextField()
இந்த எடுத்துக்காட்டில், Article
மற்றும் Comment
மாதிரிகள் இரண்டும் TimestampedModel
சுருக்க வகுப்பிலிருந்து created_at
மற்றும் updated_at
புலங்களைப் பெறுகின்றன. `TimestampedModel` எனப்படும் அட்டவணை எதுவும் உருவாக்கப்படாது.
8. managed
: அட்டவணை உருவாக்கம் மற்றும் நீக்குதலைக் கட்டுப்படுத்துதல்
managed
விருப்பம் மாதிரிக்கான தரவுத்தள அட்டவணையை ஜாங்கோ தானாக உருவாக்குகிறதா, மாற்றியமைக்கிறதா மற்றும் நீக்குகிறதா என்பதைக் கட்டுப்படுத்துகிறது. இது இயல்பாக `True` ஆக இருக்கும்.
பயன்பாட்டு நிகழ்வுகள்
- ஜாங்கோவிற்கு வெளியே நிர்வகிக்கப்படும் இருக்கும் தரவுத்தள அட்டவணைகளுடன் ஒருங்கிணைத்தல்.
- தரவுத்தளக் காட்சிகள் அல்லது படிக்க மட்டும் அட்டவணைகளைக் குறிக்கும் மாதிரிகளை உருவாக்குதல்.
உதாரணமாக
class ExistingTable(models.Model):
id = models.IntegerField(primary_key=True)
data = models.CharField(max_length=255)
class Meta:
managed = False
db_table = 'existing_table'
இந்த விஷயத்தில், ஜாங்கோ `existing_table` அட்டவணையை உருவாக்கவோ அல்லது மாற்றியமைக்கவோ முயற்சிக்காது. அது ஏற்கனவே இருப்பதாகக் கருதுகிறது.
9. proxy
: ப்ராக்ஸி மாதிரிகளை உருவாக்குதல்
ப்ராக்ஸி மாதிரி மற்றொரு மாதிரிக்கான ப்ராக்ஸியாக செயல்படுகிறது. இது அதே அடிப்படை தரவுத்தள அட்டவணையில் வேறுபட்ட இடைமுகத்தை வழங்குகிறது. ப்ராக்ஸி மாதிரிகள் புதிய தரவுத்தள அட்டவணைகளை உருவாக்காது; அவை அசல் மாதிரியின் புலங்கள் மற்றும் நடத்தைகளை வெறுமனே பெறுகின்றன.
உதாரணமாக
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
class DiscountedProduct(Product):
class Meta:
proxy = True
ordering = ['price']
def apply_discount(self, discount_percentage):
self.price *= (1 - discount_percentage / 100)
self.save()
DiscountedProduct
மாதிரி Product
மாதிரியாக அதே தரவுத்தள அட்டவணையைப் பயன்படுத்துகிறது, ஆனால் வேறுபட்ட இடைமுகத்தை வழங்குகிறது (எ.கா., விலையின் மூலம் இயல்புநிலை வரிசைப்படுத்துதல் மற்றும் தள்ளுபடிகளைப் பயன்படுத்தும் முறை).
10. constraints
: தனிப்பயன் கட்டுப்பாடுகளை வரையறுத்தல் (ஜாங்கோ 2.2+)
constraints
விருப்பம் காசோலைக் கட்டுப்பாடுகள் அல்லது தனித்துவமான கட்டுப்பாடுகள் போன்ற தனிப்பயன் தரவுத்தளக் கட்டுப்பாடுகளை வரையறுக்க உங்களை அனுமதிக்கிறது. இது தரவு ஒருமைப்பாட்டின் மீது நுணுக்கமான கட்டுப்பாட்டை வழங்குகிறது.
உதாரணமாக
from django.db import models
from django.db.models import CheckConstraint, Q
class Event(models.Model):
start_date = models.DateField()
end_date = models.DateField()
class Meta:
constraints = [
CheckConstraint(check=Q(end_date__gte=models.F('start_date')),
name='end_date_after_start_date')
]
இந்த எடுத்துக்காட்டு நிகழ்வின் end_date
எப்போதும் start_date
ஐ விட அதிகமாகவோ அல்லது சமமாகவோ இருப்பதை உறுதி செய்கிறது.
மேம்பட்ட கருத்தில் கொள்ள வேண்டியவை
தரவுத்தள குறிப்பிட்ட விருப்பங்கள்
சில மாதிரி மெட்டா விருப்பங்கள் தரவுத்தளத்திற்கு குறிப்பிட்டவை. எடுத்துக்காட்டாக, MySQL இல் ஒரு குறிப்பிட்ட அட்டவணைக்கு வேறு சேமிப்பக எஞ்சினைப் பயன்படுத்தலாம் அல்லது PostgreSQL க்கான குறிப்பிட்ட அட்டவணை உத்திகளை உள்ளமைக்கலாம். விவரங்களுக்கு உங்கள் தரவுத்தள ஆவணத்தைப் பார்க்கவும்.
இடம்பெயர்வுகளில் தாக்கம்
மாதிரி மெட்டா விருப்பங்களில் ஏற்படும் மாற்றங்களுக்கு அடிக்கடி தரவுத்தள இடம்பெயர்வுகள் தேவைப்படுகின்றன. உங்கள் தரவுத்தளத் திட்டத்திற்கு மாற்றங்களைப் பயன்படுத்த Meta விருப்பங்களைத் திருத்திய பின் python manage.py makemigrations
மற்றும் python manage.py migrate
ஐ இயக்க மறக்காதீர்கள்.
செயல்திறன் சரிப்படுத்தும்
உங்கள் மாதிரி மெட்டா விருப்பங்களின் செயல்திறன் தாக்கங்களை கவனமாகக் கவனியுங்கள், குறிப்பாக ordering
மற்றும் indexes
. மெதுவான வினவல்களைக் கண்டறிய தரவுத்தள சுயவிவரக் கருவிகளைப் பயன்படுத்தவும், அதற்கேற்ப உங்கள் அட்டவணைகளை மேம்படுத்தவும்.
சர்வதேசமயமாக்கல் மற்றும் உள்ளூர்மயமாக்கல்
verbose_name
மற்றும் verbose_name_plural
ஐப் பயன்படுத்தும் போது, வெவ்வேறு மொழிகளுக்கான மொழிபெயர்க்கப்பட்ட பெயர்களை வழங்க சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n) ஆகியவற்றைக் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள்.
முடிவுரை
ஜாங்கோ மாதிரி மெட்டா விருப்பங்கள் உங்கள் மாதிரிகள் தரவுத்தளத்துடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைத் தனிப்பயனாக்க ஒரு சக்திவாய்ந்த கருவித்தொகுப்பை வழங்குகின்றன. இந்த விருப்பங்களில் தேர்ச்சி பெறுவதன் மூலம், செயல்திறன், பராமரிப்பு மற்றும் தரவு ஒருமைப்பாடு ஆகியவற்றிற்காக உங்கள் ஜாங்கோ பயன்பாடுகளை மேம்படுத்தலாம். அட்டவணை பெயர்கள் மற்றும் வரிசைப்படுத்துதலைத் தனிப்பயனாக்குவது முதல் அட்டவணைகளை உருவாக்குவது மற்றும் கட்டுப்பாடுகளை செயல்படுத்துவது வரை, உங்கள் திட்டங்களின் குறிப்பிட்ட தேவைகளைப் பூர்த்தி செய்ய உங்கள் தரவுத்தளத் திட்டத்தை நன்றாக மாற்றியமைக்க மாதிரி மெட்டா விருப்பங்கள் உங்களுக்கு அதிகாரம் அளிக்கின்றன.
உங்கள் மெட்டா விருப்பங்களின் தாக்கம் தரவுத்தள இடம்பெயர்வுகள், வினவல் செயல்திறன் மற்றும் ஒட்டுமொத்த பயன்பாட்டு நடத்தை ஆகியவற்றில் கவனமாகக் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள். சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலமும், உங்கள் தரவுத்தளத்தை தொடர்ந்து கண்காணிப்பதன் மூலமும், உங்கள் ஜாங்கோ மாதிரிகள் நன்கு மேம்படுத்தப்பட்டு உங்கள் தரவுத்தள உள்கட்டமைப்புடன் தடையின்றி ஒருங்கிணைக்கப்படுவதை உறுதிசெய்யலாம், உங்கள் பயன்பாடுகளின் அளவு மற்றும் சிக்கலைப் பொருட்படுத்தாமல். நல்ல அதிர்ஷ்டம்!